
旧版的 Tkinter
使用 tkinter
新版使用 tkinter.ttk
样式更贴合现代
import tkinter as tk
window
初始化窗口
window = tk.Tk()
生成主窗口
window.mainloop()
不断刷新窗口状态
*只有添加该条指令,窗口才可视
widget
顾名思义,小组件
部署在主窗口内
常用组件及方法
-
Label
不能编辑的标签
主要用来提示 -
Button
可交互按钮
可触发事件 -
Entry
单行的文本输入
-
get()
-
delete()
-
delete(pos)
-
delete(start,end)
从 0 开始
-
delete(0,tk.END)
delete ALL
-
-
insert()
- insert(pos, str)
-
-
Text
多行的文本输入
-
get()
-
get(start,end)
eg.
txt_content.get(0,10)
获取第1到第11个字符字符包含换行符
-
-
delete()
- delete(start,end)
-
insert()
- insert(start,end)
-
-
Frame
用来承载其他组件组织窗口
common attrib 共有属性
eg.
lbl_submit = tk.Label(master = frm_main, bg = 'black', width = 10, text = "Submit")
-
master
父组件
eg. frm_main = tk.Frame(master=window)
-
bg
-
fg
-
width
单位为 pixel 像素
-
height
-
borderwidth
tk.FLAT
tk.SUNKEN
tk.RAISED
tk.GROOVE
tk.RIDGE显示样式
可以用下面的字典来快速引用
border_effects = {
"flat": tk.FLAT,
"sunken": tk.SUNKEN,
"raised": tk.RAISED,
"groove": tk.GROOVE,
"ridge": tk.RIDGE,
}
eg. frm_main = tk.Frame(master=window, relief=border_effects["flat"]) -
text
eg.
btn_submit["text"] = "Submit"
-
image
Layout
生成的 widget 调用
合并到设置好的 master 上
*除了主窗口,其他组件都需要使用
.pack()
-
ipadx/y=
内部间隔
eg. ipadx = 10, ipady = 10
内部的间隔各为10px -
padx/y=
-
side=
tk.LEFT/RIGHT/TOP/BOTTOM
当前的 widget 具体停靠在那边
-
fill=
tk.X/Y/BOTH
在 X / Y / BOTH 方向上扩展
-
expand=
True/False
是否随着窗口大小变化而变化
.grid()
-
row=
widget 所在行号,从0开始
-
column=
widget 所在列号,从0开始
-
sticky=
"n" "e" "s" "w"
可自由组合eg.
btn_submit.grid(sticky="ne")
靠东北方
Event
原理为每次 mainloop() 检查是否触发了事件
bind()
全局事件
-
两个必备参数
-
event
事件名称,内置事件
所有 event 的参考网址:
https://effbot.org/tkinterbook/tkinter-events-and-bindings.htm -
event handler
函数,参数为 event
eg.
def function(event):
....
-
command=
和按钮等绑定,单击触发
eg.
def Print():
print(btn_print["text])
btn_print = tk.Button(master=window, text="Hello World!", command=Print)
点击按钮,输出按钮的 text 属性
- button
- event handler
XMind: ZEN - Trial Version